<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{padding: 0;margin: 0;}
        .adBox{
            width: 300px;
            height: 400px;
            background-color: #6ff;
            position: fixed;
            right: 5px;
            bottom: 5px;
            display: none;
        }

        .search{
            width: 400px;
            height: 40px;
            display: block;
            margin: 50px auto;
            outline: none;
        }
    </style>
</head>
<body>
    <!-- <div class="adBox"></div> -->
    <input type="text" class="search">
</body>
<script>
    // 延时器  -> 延迟一段时间,执行既定的内容  (注意:计时器只要不清除会一直执行,延时器默认只在执行一次)

    // 设置延时器
    // setTimeout(callback,delayTime,arg1,arg2...argN)
    // callback  延迟一段时间执行的内容(回调函数)
    // delayTime 延迟的时间(单位毫秒)

    // 返回值: 延时器的编号      

    // 注意:如果传入的函数需要接收参数,从第三参数开始依次向后传

    // 清除延时器
    // clearTimeout(延时器的编号)  


    // 延时器典型应用:
    // 1. 延迟指定时间执行既定的操作
    // 2. 函数防抖 -> 短时间内重复触发多次只执行最后一次

    
    // 搜索 -> 每次从后台数据进行搜索 -> 每次内容改动就 搜索链接数据数据库比较耗费时间/性能
    
    var searchInp = document.getElementsByClassName("search")[0];
    // oninput 输入框内容改变时触发

    // 未处理
    // searchInp.oninput = function(){
    //     var key = searchInp.value;
    //     console.log("从后台搜索关键词:",key);
    // }

    // 防抖处理
    var timer = null;  // 全局变量 -> 记录延时器的编号
    searchInp.oninput = function(){
        clearTimeout(timer); // 如果300ms内再次输入 ->先清除上一个 -> 在启动下一个
        timer = setTimeout(function(){// 从开始设置延时器 -> 函数执行(300ms)
            var key = searchInp.value;
            console.log("从后台搜索关键词:",key);
        },300);
    }



</script>
</html>